package com.tanhua.server.exception;

import com.tanhua.model.vo.ErrorResult;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

/**
 * 1、类上添加注解
 * 2、配置java方法，当抛出异常时，自动执行
 * 3、在java方法上配置注解，（指定当前方法能够处理的异常类型）
 */
@ControllerAdvice
public class ExceptionAdvice {

    /**
     * 方法参数，返回值和controller一致
     *    代码错误
     *      {
     *          errorcode：“9999”
     *          errorMessage：“我错了”
     *      }
     */
    @ExceptionHandler(value=Exception.class)
    public ResponseEntity handlerException(Exception e) {
        e.printStackTrace();
        return ResponseEntity.status(500).body(ErrorResult.error());
    }

    /**
     * 方法参数，返回值和controller一致
     *    业务错误，需要返回指定的错误信息
     *      {
     *          errorcode：“0001”
     *          errorMessage：“验证码出错”
     *      }
     */
    @ExceptionHandler(value=BusinessException.class)
    public ResponseEntity handlerException(BusinessException e) {
        e.printStackTrace();
        ErrorResult result = e.getResult();
        return ResponseEntity.status(500).body(result);
    }
}
